| Anterior | Próximo | Índice |
Você às vezes pode querer ligar vários arquivos objetos em um programa .COM, usando um LINKER. Isso só é possível se você usar nomes de segmentos e agrupá-los com a diretiva GROUP. Um programa .COM não usa segmento de pilha. Nesses arquivos você não pode usar a diretiva ORG 0x100, mas, em vez disso, inicia o código reservando 0x100 bytes com a diretiva RESB, e começando o programa como se ele fosse um programa .EXE, ou seja, a partir do rótulo ..start:
; Arquivo: PGCOM3.ASM
; Exemplo de programa .COM gerado a partir de arquivos
; objeto.
; Para produzir PGCOM3.OBJ use
; nasm -fobj pgcom3.asm
;
; Para produzir o executavel PGCOM3.COM você deve primeiro criar o arquivo objeto, e
; depois ligar com um LINKER.
; Você pode usar qualquer LINKER (Tlink, Link, Alink, etc.):
;
; 1) com ALINK, use:
; alink pgcom3 -oCOM
;
; 2) com o Tlink (turbo linker) use:
; tlink /t pgcom3;
;
; 3) Com versoes mais atuais do LINK da Microsoft:
; link /TINY pgcom3;
;
; 4) Com versoes antigas do LINK (MASM 4.0 por exemplo)
; link pgcom3;
; exe2bin pgcom3 pgcom3.com
; del pgcom3.exe
;
; Vantagens de um programa .COM gerado de arquivo objeto:
;
; 1) Voce pode separar codigo de dados de modo claro
; e consistente;
; 2) Voce pode usar rotinas externas em outros arquivos objeto
; usando a diretiva extern.
group JUNTE CODIGO DADOS
segment CODIGO class=CODE
resb 0x100
..start:
MOV DX, MENSAGEM
MOV AH,9
INT 0x21
MOV AH,0x4c00
int 0X21
segment DADOS class=DATA
MENSAGEM DB "Essa é uma mensagem...", '$'
|
| Anterior | Próximo | Índice |